Entropy attacks
Ed25519 leaks private key if public key is incorrect
ephemeral private keyのr = sha512(z, M)がleakすると、署名Sとh = sha512(R, A, M) から a = (S - r) / hによって秘密鍵を復元可能。
rがunknownでも、同じrによる2つの署名からでも秘密鍵はa = (S1 - S2) / (h1 - h2) により復元可能。
署名時に、別のpublic keyにより h を生成すると、rは同じ値のまま2つの署名を作ることができてしまうので、a = (S1 - S2) / (h1 - h2) により秘密鍵を復元可能。
possible solutions
r = sha512(z, M) -> r = sha512(z, A, M)変更することで、wrong public keyを用いてもrも変わるので復元はできなくなる。
private keyからpublic keyをextractする関数を追加。
rがdeterministic nonceを用いることによって、PS3のmaster key流出やbuggy android clientsによる50BTC奪取を防ぐ
Ed25519 leaks private key if public key is incorrect
Entropy Attacks!
Attacking Deterministic Signature Schemes using Fault Attacks